package com.partsoft.dits.log;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;

import com.partsoft.dits.EdgeDescriptor;


/**
 * 日志实体
 */
public interface LogEntity extends Serializable, Cloneable {
	
	String getId();
	
	/**
	 * 描述符类型
	 */
	Class<? extends EdgeDescriptor> getDescriptorClass();
	

	/**
	 * 描述符标识
	 */
	Object getDescriptorIdentity();
	
	/**
	 * 记录时间 参见{@link Timestamp}类型
	 */
	Date getLogDate();
	
	/**
	 * 日志类型，参见{@link LogType}
	 */
	LogType getType();

	/**
	 * 日志级别，参见{@link LogLevel}
	 */
	LogLevel getLevel();
	
	/**
	 * 消息抬头
	 */
	String getLineNumber();
	
	/**
	 * 消息内容 
	 */
	String getContent();
	
	/**
	 * 文件名
	 * @return
	 */
	String getFileName();
	
	/**
	 * 方法名
	 */
	String getMethodName();
	
	/**
	 * 类名
	 * @return
	 */
	String getClassName();
	
	
	/**
	 * 线程名
	 * @return
	 */
	String getThreadName();
	
	/**
	 * 获得附件列表
	 */
	LogAttachment []getAttachments();
	
	/**
	 * 是否有指定名称的附件
	 * @param name
	 */
	boolean hasAttachment(String name);
	
	/**
	 * 获得指定名称的附件
	 * @param name
	 */
	LogAttachment getAttachment(String name);
	
	/**
	 * 是否有附件
	 */
	boolean hasAttachments();
	
	
	LogEntity clone();

}
